#ifndef _DETU_MEDIA_VENC_CHN_H_
#define _DETU_MEDIA_VENC_CHN_H_

#include "defs.h"
#include "types.h"
#include "json/json.h"
#include "media_types.h"

namespace detu_media
{

class VencChn
{
protected:
    VencChn() {}

    virtual ~VencChn() {}

public:
    virtual S_Result start(int picNum = -1) { return S_OK; };

    virtual S_Result stop(void) { return S_OK; };

    virtual bool isStarted(void) { return false; };

    virtual S_Result getId(int &id) { return S_OK; };

	virtual S_Result getBindCfg(Json::Value& config) { return S_OK; };

	virtual S_Result getStream(Uint32_t& seq, const Uint8_t* bufAddr, const Uint32_t bufSize, StreamInfo& info, const Int32_t milliSec = -1) { return S_OK; };

	virtual S_Result getStream(Uint32_t& seq, Stream& stream, StreamInfo& info, const Int32_t milliSec = -1) { return S_OK; };

	virtual S_Result requestIDR(const bool isInstant = true) { return S_OK; };

	virtual S_Result getFd(int &fd) { return S_OK; };

	virtual S_Result getFrame(Uint32_t& seq, FrameInfo* &info) { return S_OK; };

    virtual S_Result SendFrame(DT_VIDEO_FRAME_INFO_S* VideoFrameInfo, const Int32_t milliSec = -1) { return S_OK; };

	virtual S_Result releaseFrame(Uint32_t& seq) { return S_OK; };
};

}

#endif

